[C] Manipulação de vetores/ponteiros
Publicado por Enzo de Brito Ferber (última atualização em 15/09/2010)
[ Hits: 11.436 ]
Homepage: http://www.maximasonorizacao.com.br
Programa que mistura a manipulação de vetores e ponteiros para criar um vetor C baseado em outros 2 vetores A e B. O vetor C conterá todos os elementos de A mais os elementos não repetidos de B.
// vet.c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define ELEMENTS 5
#define COMB 10
#define TRUE 1
#define FALSE 0
int *geraVet( int a[], int b[] )
{
register int i, j;
int found;
// o maximo de elementos que o vetor pode ter é COMB ( a + b ),
// caso nenhum dos elementos sejam repetidos
int *c = (int *) malloc( COMB * sizeof( int ));
int *d;
// check de memoria
if ( !c ) return NULL;
/* PONTEIROS
* ---------
*
* O uso de ponteiros é melhor para não causar problemas
* no retorno da funçao, e também possibilitam uma manipulação
* melhor dos dados.
*
*/
// inicializa o vetor
for( i = 0; i < COMB; i++ )
c[ i ] = 0;
// copia dos elementos do primeiro vetor
for( i = 0; i < ELEMENTS; i++ )
c[ i ] = a[ i ];
// 'd' é usado como referencia para o proximo endereço vazio do ponteiro 'c'
d = c + ELEMENTS;
// copia com comparação de repetição
for( j = 0; j < ELEMENTS; j++ )
{
// variavel de controle
found = FALSE;
// loop de comparação
for( i = 0; i < ELEMENTS; i++ )
if ( b[j] == c[i] ) found = TRUE;
// se o elemento nao for repetido, a copia é feita.
if ( !found) *(d++) = b[j];
}
// retorno do endereço do ponteiro
return c;
}
int main( int argc, char *argv[] )
{
// vetores de teste
int a[] = { 1, 2, 3, 4, 5 };
int b[] = { 2, 3, 4, 5, 6 };
int c[] = { 5, 6, 7, 8, 9 };
int d[] = { 6, 7, 8, 9, 10 };
// retorno
int *ret;
// controladores de loop
register int i;
/* COMBINAÇÕES:
*
* A - B B - C
* A - C B - D
* A - D C - D
*/
// combinação
ret = geraVet( a, b );
// impressão do vetor
for( i = 0; i < COMB; i++ )
printf( "ret[ %2d ]: %2d\n", i, ret[ i ]);
// fim do programa
return 0;
}
Exemplo Básico de Ponteiros em C
Nenhum comentário foi encontrado.
librePods: liberte seus AirPods em 2026
Bluefin - A nova geração de ambientes de trabalho Linux
Como atualizar sua versão estável do Debian
Instalando e definindo as novas fontes Adwaita no GNOME
Configurar aviso da temperatura da CPU no Conky
Pós-instalação do elementary OS 8.1
Quer auto-organizar janelas (tiling) no seu Linux? Veja como no Plasma 6 e no Gnome
Copiando caminho atual do terminal direto para o clipboard do teclado
Conky não mostra temperaturas da CPU no notebook (15)
Após todos esses anos... youtube! (2)
archlinux resolução abaixou após atualização [RESOLVIDO] (19)
Registro do 'last&qu... errado [RESOLVIDO] (9)
O WiFi não reconhece minha rede depois que o processo de suspensão é r... (2)









